TODO for version 5
==================

options.fetch(:option) { Default }

* DONE id method, same as category? -> id(:name). Default: id
* key_format -> id_format
* Make id_format default dependent on backend?
* Default: ids -> amount
* DONE Picky.root
* Picky.index_path ?
* DONE Enumerator for results?
* Improve Results design: Only calculate what is necessary -> optimal paths for ids/allocations.
* name:jif~ should only look for similarity in the designated category as per usual.
* Better inspection/to_s/debugging of indexes.

Indexing
--------

* Don't dump when indexing.
* Is dump only related to dumping to the file system?
* Add parent directory parameter when calling dump or load.

Loggers as modules?
-------------------

Picky.logger = STDOUT
Picky.logger = Logger.new('log/picky.log')
Picky.logger = STDOUT.extend Picky::Loggers::Silent # <= Problematic.
Picky.logger = Logger.new('log/picky.log').extend Picky::Loggers::Verbose
...

def logger= loggy_thing
  loggy_thing.extend Picky::Loggers::Concise # This then decides how to extend.
  @logger = loggy_thing
end

Classic remnants
----------------

* Remove all classic options.

Optimizations
-------------

* object id instead of hash for allocation comparison.
* Option to cleanly stop calculating ids (inside the algorithm) if we have enough results for a full result.